#ifndef __LINK_LIST_H__
#define __LINK_LIST_H__

// 导入头文件
#include "../../include/Element_data.h"

/* *****************************   声明数据关系   ***************************** */
// 节点结构体
typedef struct Node
{
    Elenemt_data data;          // 数据域 用于存储当前节点的数据
    struct Node * next;         // 指针域 指向下一个节点
}Node;

// 头结点结构体
typedef struct link_list
{
    Node * next;
}link_list;

/* *****************************  声明基本操作函数  ***************************** */

// 单链表的创建
int init_link_list(link_list ** list);

// 单链表的插入
int insert_link_list(link_list* list, Elenemt_data data, int pos);

// 单链表的删除
int delete_link_list(link_list* list, int pos);

// 单链表的查找
Node* find_name_link_list(link_list* list, char * name);

// 单链表的修改
int up_data_link_list(link_list* list, Node * node);

// 单链表的遍历
int print_link_list(link_list* list);

// 单链表的判空
int IsEmpty_link_list(link_list* list);

// 单链表的清空
int clear_link_list(link_list* list);

// 单链表的合并
int merge_link_list(link_list* list1, link_list* list2);

// 单链表的销毁
int free_link_list(link_list ** list);


#endif
